﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Crossroad.Utils
{
    public class KeyUtil
    {
        private static readonly object Locker = new object();

        /// <summary>
        /// 唯一key 长度（32）
        /// </summary>
        /// <returns></returns>
        public static string UniqueKey => Guid.NewGuid().ToString().Replace("-", "");

        /// <summary>
        /// guid字符串格式 长度（36）
        /// </summary>
        public static string GuidKey => Guid.NewGuid().ToString();

        /// <summary>
        /// 订单号
        /// </summary>
        public static string OrderNo
        {
            get
            {
                //lock 关键字可确保当一个线程位于代码的临界区时，另一个线程不会进入该临界区。
                lock (Locker)
                {
                    var ran = new Random();
                    return $"{DateTime.Now:yyMMddHHmmssfff}{ran.Next(1000, 9999)}";
                }
            }
        }

        /// <summary>
        /// 流水号
        /// </summary>
        public static string SerialNo
        {
            get
            {
                //lock 关键字可确保当一个线程位于代码的临界区时，另一个线程不会进入该临界区。
                lock (Locker)
                {
                    var ran = new Random();
                    return $"{DateTime.Now:yyMMddHHmmssfff}{ran.Next(1000, 9999)}";
                }
            }
        }

        /// <summary>
        /// 生成随机数字
        /// </summary>
        /// <returns></returns>
        public static string Number
        {
            get
            {
                lock (Locker)
                {
                    var result = "";
                    var random = new Random();
                    for (var i = 0; i < 11; i++)
                    {
                        result += random.Next(10).ToString();
                    }

                    return result;
                }
            }
        }



    }
}
